package com.test.common.randcode;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;

public class RemoveInterference {
    public static void removeInterference(String fileName) {
        BufferedImage img = null;
        try {
            img = ImageIO.read(new File("validateCode\\img\\"+fileName));
        } catch (IOException e) {
            e.printStackTrace();
            return;
        }
        img= handleImage(img);
        //保存图片
        File file = new File("validateCode\\img\\temp\\"+fileName);
        if (!file.exists())
        {
            File dir = file.getParentFile();
            if (!dir.exists())
            {
                dir.mkdirs();
            }
            try
            {
                file.createNewFile();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
        }
        try {
            ImageIO.write(img, "jpg", file);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static BufferedImage removeInterference(InputStream is) {
        BufferedImage img = null;
        try {
            img = ImageIO.read(is);
            img= handleImage(img);
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            return img;
        }

    }

    public static BufferedImage removeInterference(BufferedImage img) {
        return handleImage(img);
    }

    private static BufferedImage handleImage(BufferedImage img){
        int width = img.getWidth();
        int height = img.getHeight();
//        //循环执行除去干扰像素
//        for(int i = 1;i < width;i++){
//            Color colorFirst = new Color(img.getRGB(i, 1));
//            int numFirstGet = colorFirst.getRed()+colorFirst.getGreen()+colorFirst.getBlue();
//            for (int x = 0; x < width; x++)
//            {
//                for (int y = 0; y < height; y++)
//                {
//                    Color color = new Color(img.getRGB(x, y));
//                    //System.out.println("red:"+color.getRed()+" | green:"+color.getGreen()+" | blue:"+color.getBlue());
//                    int num = color.getRed()+color.getGreen()+color.getBlue();
//                    if(num >= numFirstGet){
//                        img.setRGB(x, y, Color.WHITE.getRGB());
//                    }
//                }
//            }
//        }
        //循环执行除去干扰像素
        for (int x = 0; x < width; x++) {
            for (int y = 0; y < height; y++) {
                Color color = new Color(img.getRGB(x, y));
                int num = color.getRed() + color.getGreen() + color.getBlue();
                if (num <= 60) {
                    img.setRGB(x, y, Color.WHITE.getRGB());
                }
            }
        }
        return img;
//        //图片背景变黑色
//        for(int i = 1;i<width;i++){
//            Color color1 = new Color(img.getRGB(i, 1));
//            int num1 = color1.getRed()+color1.getGreen()+color1.getBlue();
//            for (int x = 0; x < width; x++)
//            {
//                for (int y = 0; y < height; y++)
//                {
//                    Color color = new Color(img.getRGB(x, y));
//                    //System.out.println("red:"+color.getRed()+" | green:"+color.getGreen()+" | blue:"+color.getBlue());
//                    int num = color.getRed()+color.getGreen()+color.getBlue();
//                    if(num==num1){
//                        img.setRGB(x, y, Color.BLACK.getRGB());
//                    }else{
//                        img.setRGB(x, y, Color.WHITE.getRGB());
//                    }
//                }
//            }
//        }
    }
}
